package org.mybatis.generator;

import java.io.Serializable;
import java.util.List;

import org.apache.ibatis.annotations.Param;

/**

 * @author mybatis T表示与table表对应的实体类（Entity） E表示Entity对应的Param类 PK表示可能会用到主键

 *         (比如Integer等)

 * @param <T> 对应的实体

 * @param <E> 对应查询参数实体

 * @param <PK> 主键类型

 */
public interface BaseDao<T, E, PK extends Serializable> {
    int countByCriteria(E criteria);

	int deleteByCriteria(E criteria);

	int deleteByPrimaryKey(PK id);

	int insertSelective(T record);

	List<T> selectByCriteria(E criteria);

	T selectByPrimaryKey(PK id);

	int updateByCriteriaSelective(@Param("record") T record, @Param("param") E criteria);

	int updateByPrimaryKeySelective(T record);

}